package com.share.user.admin.pojos;

import com.share.common.enums.SocialPlatformEnum;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;

/**
 * 用户社交认证关联实体类
 * <p>存储用户与第三方平台的认证关联信息</p>
 * <p>对应数据库表：user_social_auth</p>
 */
@Data
@TableName("user_social_auth")
public class UserSocialAuth implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID，自增
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 关联的用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 社交平台类型枚举
     * @see SocialPlatformEnum
     */
    private SocialPlatformEnum platform;

    /**
     * 加密存储的平台用户ID（二进制格式）
     */
    private byte[] openid;

    /**
     * 微信UnionID等关联ID（二进制格式）
     */
    private byte[] unionid;

    /**
     * 授权元数据（JSON格式存储）
     * <p>包含昵称、头像等平台返回的额外信息</p>
     */
    private String metadata;

    /**
     * 记录创建时间，自动填充
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 记录更新时间，自动填充
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
}